package com.ywk.base.javaBase.javaKeywords;

/**
 * @author zbh
 * @date 2022/9/16 16:07
 */
public class IntegerTest {
    public static void main(String[] args) {
        byte by=127;//一个字节8位：(2^8-1)-1
        int in=2147483647;//(2^32-1)-1
        System.out.println((int)(Math.pow(2, 31) - 1));
        //Integer自动装箱/拆箱，对于-128到127之间的数，会进行缓存，当超过范围就是通过new来创建一个对象
        Integer a=100;
        Integer b=100;
        Integer c=200;
        Integer d=200;
        System.out.println("a == b："+(a == b));
        System.out.println("c == d："+(c == d));

        int a1=128888888;
        long b1=1288888888L;
        double c1=1288888888.0;
        System.out.println("a1 == b1："+(a1 == b1));
        System.out.println("a1 == c1："+(a1 == c1));

        //编译器会在自动装箱过程调用 valueOf() 方法，Integer.valueOf()使用缓存池中的对象，多次调用会取得同一个对象的引用
        Integer x = new Integer(123);
        Integer y = new Integer(123);
        System.out.println(x == y);    // false
        Integer z = Integer.valueOf(123);
        Integer k = Integer.valueOf(123);
        System.out.println(z == k);   // true
        Integer m = Integer.valueOf(128);
        Integer n = Integer.valueOf(128);
        System.out.println(m == n);   // false
    }

}
